package com.evan.review;

import android.app.Application;
import android.util.Log;

/**
 * 自定义Application类，用于应用程序全局初始化
 * 
 * 面试要点：
 * 1. Application是整个应用的基类，生命周期与应用一致
 * 2. 适合做全局初始化操作，如SharedPreferences、数据库、网络请求框架等
 * 3. 注意不要在Application中存储大量数据，避免内存泄漏
 * 4. onCreate方法会在应用启动时首先被调用，比任何Activity都早
 */
public class ReviewApplication extends Application {
    
    private static final String TAG = "ReviewApplication";
    private static ReviewApplication instance;
    
    @Override
    public void onCreate() {
        super.onCreate();
        instance = this;
        Log.d(TAG, "Application onCreate");
        
        // 在这里进行全局初始化
        initApplication();
    }
    
    private void initApplication() {
        // 这里可以初始化各种框架
        Log.d(TAG, "Application initialized");
    }
    
    /**
     * 获取Application实例的单例方法
     * 注意：这种方式获取Context可能导致内存泄漏，实际项目中需谨慎使用
     */
    public static ReviewApplication getInstance() {
        return instance;
    }


    @Override
    public void onLowMemory() {
        super.onLowMemory();
        Log.d(TAG, "Application onLowMemory - 系统内存不足时调用");
    }

    @Override
    public void onTrimMemory(int level) {
        super.onTrimMemory(level);
        Log.d(TAG, "Application onTrimMemory: " + level);
    }
} 